//
//  SXToolManager.m
//  SXDataManager-SXDataManager
//
//  Created by wangshuixin on 2019/1/21.
//

#import "SXToolManager.h"

@implementation SXToolManager

// NSTimer定时器倒计时
+ (void)managerTimerDuration:(CGFloat)duration frequency:(CGFloat)frequency implementationProcess:(SXProgramImplementationProcess)programProcess finishProcess:(SXProgramImplementationProcess)finishProcess {
    __block CGFloat timeout = duration;
    __block CGFloat timeFrequency = frequency;
    dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
    dispatch_source_t timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0,queue);
    dispatch_source_set_timer(timer,dispatch_walltime(NULL, 0),timeFrequency*NSEC_PER_SEC, 0); //执行频率：frequency
    dispatch_source_set_event_handler(timer, ^{
        if(timeout <= 0) { //倒计时结束，关闭
            dispatch_source_cancel(timer);
            dispatch_async(dispatch_get_main_queue(), ^{
                finishProcess();
            });
        } else {
            dispatch_async(dispatch_get_main_queue(), ^{
                programProcess();
            });
            timeout -= timeFrequency;
        }
    });
    dispatch_resume(timer);
}

@end
